package cn.devices.controller;


import cn.devices.entity.TbType;
import cn.devices.model.JsonMessage;
import cn.devices.service.TbTypeService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.yaml.snakeyaml.constructor.DuplicateKeyException;

/**
 * <p>
 * 设备类别表 前端控制器
 * </p>
 * 添加类别信息：tbTypeAdd
 * 修改列别信息：tbTypeUpdate
 * 修改编号：tbTypeUpdateId
 * 删除类型:tbTypeDelete
 * 分页:tbTypePage
 * 所有类型:tbTypeList
 * 根据id查询：tbTypeById
 *
 * @author 秋水浮萍
 * @since 2021-02-07
 */
@RestController
@RequestMapping("/tb-type")
public class TbTypeController {

    @Autowired
    private TbTypeService typeService;

    /**
     * 添加类别信息
     *
     * @return TbType
     */
    @PostMapping("tbTypeAdd")
    public JsonMessage tbTypeAdd(@RequestBody TbType tbType) {
        JsonMessage message = new JsonMessage();
        try {
            typeService.tbTypeAdd(tbType);
            message.setData("添加成功");
//        }
        }catch (Exception e){
            if(e instanceof DuplicateKeyException){

                // "该接口数据主键冲突"+e.getMessage()
                System.out.println("aaaaa");

            }else {
                System.out.println("主键已存在");
            }
        }
        return message;
    }

    /**
     * 修改列别信息
     *
     * @param tbType
     * @return
     */
    @PostMapping("tbTypeUpdate")
    public JsonMessage tbTypeUpdate(@RequestBody TbType tbType) {
        JsonMessage message = new JsonMessage();
        typeService.tbTypeUpdate(tbType);
        message.setData("修改成功");
        return message;
    }

    /**
     * 修改编号
     *
     * @param tbTypeIdOld
     * @param tbTypeIdNew
     * @return
     */
    @GetMapping("tbTypeUpdateId")
    public JsonMessage tbTypeUpdateId(String tbTypeIdOld, String tbTypeIdNew) {
        JsonMessage message = new JsonMessage();
        try {
            typeService.tbTypeID(tbTypeIdOld, tbTypeIdNew);
            message.setData("修改成功");
        } catch (DuplicateKeyException e) {
            message.setData("编号已存在");
        }catch (Exception e){
            System.out.println(e);
        }
        return message;
    }

    /**
     * 删除类型
     *
     * @param tbTypeId
     * @return
     */
    @GetMapping("tbTypeDelete")
    public JsonMessage tbTypeDelete(String tbTypeId) {
        JsonMessage message = new JsonMessage();
        typeService.tbTypeDelete(tbTypeId);
        message.setData("删除成功");
        return message;
    }

    /**
     * 根据id查询
     *
     * @param tbTypeId
     * @return
     */
    @GetMapping("tbTypeById")
    public JsonMessage tbTypeById(String tbTypeId) {
        JsonMessage message = new JsonMessage();
        message.setData(typeService.tbType(tbTypeId));
        return message;
    }

    /**
     * 分页 所有类型
     *
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @GetMapping("tbTypePage")
    public JsonMessage tbTypePage(@RequestParam(defaultValue = "1") int pageIndex,
                                  @RequestParam(defaultValue = "10") int pageSize) {
        JsonMessage message = new JsonMessage();
        PageInfo<TbType> pageInfo = typeService.tbTypePage(pageIndex, pageSize);
        message.setData(pageInfo);
        return message;
    }

    /**
     * 所有类型
     *
     * @return
     */
    @GetMapping("tbTypeList")
    public JsonMessage tbTypeList() {
        JsonMessage message = new JsonMessage();
        message.setData(typeService.tbTypeList());
        return message;
    }

}
